查看原文
其他

一道囚徒问题

2016-03-05 Crossin Crossin的编程教室


前两天看到一条新闻:


@王威廉: 很多美国人已经意识到,计算机编程和相关技术以后将会是人类的一项核心技能。图为美国圣昆丁监狱的囚犯积极学习编程技能。

该项目负责人说,从前67%被释放的囚犯都会在3年内二进宫,但是我们编程项目出来的囚犯没有再返回监狱的例子,而且还有不少去做了程序员。


既然犯人们都开始学编程了,咱也不能闲着啊,还是要不断提高自己的姿势水平。


于是,我参考以前看到的某个数学题,胡乱编了道有关囚徒的编程问题:


在某个虚构的监狱里,关押着 n 个囚犯。此监狱偶尔会有 1 个名额的假释机会,但决定名额的方式比较奇葩:


所有囚犯排成一个圈,以某个人为起点从 1 开始报数,依次递增。所有报到奇数的犯人立刻离开,剩下的人继续往下报数。最后剩下的一个犯人获得假释。


那么,站在哪个位置,才能保证一站到底?


想象一下,你现在是一个有台装了 Python 的电脑且会编程的囚犯,如何实现一个函数 lucky(n),让它返回这个幸运数字。


动手试试,我会在本周日给出解答。



Crossin的编程教室

微信ID:crossincode

论坛:http://bbs.crossincode.com

QQ群:465369080

点击左下角“阅读原文”,查看更多学习资源

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存